package com.frame.work.service;

import com.frame.work.entity.TblMeteringLog;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Date;
import java.util.List;

/**
 * 电量服务日志信息
 */
public interface TblMeteringLogService extends IService<TblMeteringLog> {
    /**
     * 添加电量日志信息
     *
     * @param meteringLog
     */
    void addMeteringLog(TblMeteringLog meteringLog);

    /**
     * 通过时间查询电量日志信息
     *
     * @param deviceMac
     * @param startTime
     * @param endTime
     * @return
     */
    List<TblMeteringLog> selectByTime(String deviceMac, Date startTime, Date endTime);

    /**
     * 按照月查询电量日志信息
     *
     * @param year
     * @param month
     * @param deviceMac
     * @return
     */
    List<Double> selectElectricNumByMonth(String year, String month, String deviceMac);

    /**
     * 根据设备mac删除所有电量日志信息日志
     *
     * @param deviceMac
     * @return
     */
    int deleteAllByDeviceMac(String deviceMac);

    /**
     * 根据日志id，批量删除电量日志
     *
     * @param ids
     * @return
     */
    int deleteByIds(List<String> ids);

    /**
     * 根据传入的时间戳计算该时间本周开始与结束的时间
     *
     * @param timestamp
     * @return List(0)为本周开始时间（周一00:00:00），List(1)为本周结束时间（周日23:59:59）
     */
    List<Long> getWeekStartAndEndTime(long timestamp);

    /**
     * 根据传入的电量数组（时间升序排序），计算耗电量（中途可能会电量记录清空，即electricQuantity变为0）
     *
     * @param electricQuantity
     * @return
     */
    Double getElectricConsume(List<Double> electricQuantity);
}





